import pymysql


# 定义 数据库 工具 类
class DBTools(object):
    # 定义 连接数据库 方法
    @staticmethod
    def __conn_db():
        conn = pymysql.connect(host="211.103.136.244", port=7061, user="student",
                               password="iHRM_student_2021", database="ihrm", charset="utf8")
        # 必须，将成功创建的连接，返回
        return conn

    # 定义 查询一条 工具方法
    @staticmethod
    def query_one(query_sql):
        conn = None
        cursor = None
        res = None
        try:
            # 创建连接
            conn = DBTools.__conn_db()
            # 获取游标
            cursor = conn.cursor()
            # 执行 用户通过 参数传入的查询sql、提取结果集
            cursor.execute(query_sql)
            # 获取 第一条 数据
            res = cursor.fetchone()
        except Exception as err:
            print("查询sql失败：", str(err))
        finally:
            # 关闭
            cursor.close()
            conn.close()
            # 将 sql 查询的结果，返回给用户。
            return res

    # 定义 增删改 工具方法
    @staticmethod
    def db_uid(uid_sql):
        conn = None
        cursor = None
        try:
            # 创建连接
            conn = DBTools.__conn_db()
            # 获取游标
            cursor = conn.cursor()
            # 执行sql
            cursor.execute(uid_sql)
            # 提交事务
            conn.commit()
            print("增删改sql执行成功~~~！！！")
        except Exception as err:
            # 回滚事务
            conn.rollback()
            print("增删改sql失败：", str(err))
        finally:
            # 关闭
            cursor.close()
            conn.close()


# 添加测试代码
if __name__ == '__main__':
    # 直接使用 类名.静态方法名 调用。 进行测试
    res = DBTools.query_one("select * from t_book where id = 5;")
    print("sql查询结果：", res)

    # 使用 类名.静态方法名 调用
    # DBTools.db_uid("insert into t_book(id, title, pub_date) values(6887, '西游记', '1986-01-01');")
    DBTools.db_uid("delete from t_book where id = 6887;")
